<?php
	class Log { 
		
		public $errorXHTML = "";
		static $loggedMessages = array();
		private $logView = "";

		public function __construct(){
			$logView = new LogView();
		}
		// Funktion som loggar variabler
		static function LogVariable(){
			
		}
		
		//Funktion som loggar meddelanden eller variabler
		static function LogMessage($errorMessage, $XHTML = NULL){
			$timeOfError = date('Y-m-d, H:i:s');
			if($XHTML != NULL){
				Log::$loggedMessages[] = "Message: $errorMessage. Value: $XHTML ($timeOfError)" ;
			}else
			//Sparar allt som en sträng
			Log::$loggedMessages[] = "Message: $errorMessage ($timeOfError)" ;
					
			/* Sparar felmeddelandet med tiden som nyckel
			 * $this->logArray[$timeOfError] = $errorMessage;
			 */
			//$errorXHTML = $logView->ShowMessages();
		}
		
		//Funktion som loggar felen
		static function LogError($errorMessage){
			//Sätter tiden för när meddelandet kom in!	
			$timeOfError = date('H:i:s');
			//Sparar undan 
			$backtrace = debug_backtrace();
			
			//Sparar undan IP-adressen felet kom ifrån
			$ip = $_SERVER['REMOTE_ADDR'];
			
			$logDir = "log/";
			
			/// Kollar om log-katalogen finns, annars skapas den.
			if(!is_dir($logDir)){
				mkdir($logDir, 0700);
			}
			
			//Visar vart felloggen skall vara
			$logDocumentPath = $logDir . date('Y-m-d') . '_errorlog.log';
			
			//Öppnar log-documentet genom sökvägen
			//Om dokumentet inte finns skapas det
			//Nu kan man lägga till täxt i dokumentet.
			$log = fopen($logDocumentPath, 'a');
			
			//Lägger till felmeddelande och tid i det öppnade dokumentet.
			fwrite($log, "[$timeOfError] Error: $errorMessage IP: $ip \r\nBACKTRACE:\r\n");
			
			//Skriver ut fil- och funktions- namn ifrån backtrace
			foreach($backtrace as $key => $value){
				if($key != 0){
					fwrite($log, "File: " . $value['file'] . ", Function: " . $value['function'] . " Line: " . $value["line"] . "\r\n");
				}
			}
			fwrite($log, "\r\n===================================================== \r\n");
			
			//Stänger dokumentet igen.
			fclose($log);
		}

		static function readErrorLog($logDate = NULL){
			if($logDate === NULL){
				$logDate = date('Y-m-d') . '_errorlog.log';
			} else {
				$logDate = $logDate . '_errorlog.log';
			}

			$logDocumentPath = "log\\" . $logDate;
			
			$log = fopen($logDocumentPath, 'r');
			
			//Lägger till felmeddelande och tid i det öppnade dokumentet.
			$logfile = fread($log, filesize($logDocumentPath));
			$logfile = explode("\r\n", $logfile);
			//Stänger dokumentet igen.
			fclose($log);
			return $logfile;
		}
	}